Coursier 2.0.0で必要な cache migrationをやってみた
はじめに
シルバーウィーク明け(2020年9月末頃)にIntelliJを起動するとsbtの初期化中に以下のような警告が表示されました。
Warning: a legacy coursier cache was found at /Users/sasaki.kazuhiro/.coursier/cache/v1 and is currently being used. Support for that cache location will be removed in coursier 2.0.0 final, whose release is imminent. Follow the instructions at https://github.com/coursier/cache-migration#cache-migration in order to migrate your cache to the newer location.
これは何?
ざっくり言うとcoursier 2.0.0.finalからキャッシュのパスが変更されるのでキャッシュを移行せよ。という内容です。
移動の手順
メッセージにあるリポジトリでマイグレーションの方法が説明されているので、その手順に従ってマイグレーションをしてみました。
## dry-run > cs launch --contrib cache-migration -- --dry-run https://repo1.maven.org/maven2/io/get-coursier/apps/maven-metadata.xml 100.0% [##########] 1.4 KiB (2.3 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/apps-contrib/maven-metadata.xml 100.0% [##########] 1.2 KiB (5.0 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/apps-contrib/0.0.39/apps-contrib-0.0.39.pom 100.0% [##########] 1.3 KiB (6.3 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/util/cache-migration_2.13/0.1.0/cache-migration_2.13-0.1.0.pom 100.0% [##########] 2.0 KiB (9.0 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app_2.13/2.0.0-M16/case-app_2.13-2.0.0-M16.pom 100.0% [##########] 2.2 KiB (9.3 KiB / s) https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.pom 100.0% [##########] 1.6 KiB (3.6 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.0.0-RC6-13/coursier-cache_2.13-2.0.0-RC6-13.pom 100.0% [##########] 2.6 KiB (5.1 KiB / s) https://repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.3/windows-ansi-0.0.3.pom 100.0% [##########] 1.9 KiB (11.9 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.0.0-RC6-13/coursier-util_2.13-2.0.0-RC6-13.pom 100.0% [##########] 1.9 KiB (8.6 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app-annotations_2.13/2.0.0-M16/case-app-annotations_2.13-2.0.0-M16.pom 100.0% [##########] 1.6 KiB (7.0 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app-util_2.13/2.0.0-M16/case-app-util_2.13-2.0.0-M16.pom 100.0% [##########] 2.2 KiB (4.3 KiB / s) https://repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.3/shapeless_2.13-2.3.3.pom 100.0% [##########] 2.1 KiB (12.3 KiB / s) https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.pom 100.0% [##########] 3.7 KiB (22.2 KiB / s) https://repo1.maven.org/maven2/org/fusesource/jansi/jansi-project/1.18/jansi-project-1.18.pom 100.0% [##########] 10.2 KiB (64.6 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app-annotations_2.13/2.0.0-M16/case-app-annotations_2.13-2.0.0-M16.jar 100.0% [##########] 11.4 KiB (37.8 KiB / s) https://repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar 100.0% [##########] 280.6 KiB (775.2 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/util/cache-migration_2.13/0.1.0/cache-migration_2.13-0.1.0.jar 100.0% [##########] 50.5 KiB (221.7 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app_2.13/2.0.0-M16/case-app_2.13-2.0.0-M16.jar 100.0% [##########] 347.9 KiB (494.9 KiB / s) https://repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.3/windows-ansi-0.0.3.jar 100.0% [##########] 6.2 KiB (35.9 KiB / s) https://repo1.maven.org/maven2/com/github/alexarchambault/case-app-util_2.13/2.0.0-M16/case-app-util_2.13-2.0.0-M16.jar 100.0% [##########] 59.5 KiB (96.0 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.0.0-RC6-13/coursier-cache_2.13-2.0.0-RC6-13.jar 100.0% [##########] 314.1 KiB (176.2 KiB / s) https://repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.0.0-RC6-13/coursier-util_2.13-2.0.0-RC6-13.jar 100.0% [##########] 463.1 KiB (102.9 KiB / s) https://repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.3/shapeless_2.13-2.3.3.jar 100.0% [##########] 3.1 MiB (649.1 KiB / s) https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.1/scala-library-2.13.1.jar 100.0% [##########] 5.5 MiB (926.2 KiB / s) Both /Users/sasaki.kazuhiro/.coursier/cache/v1 and /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1 exist. Pass --one-by-one to move the elements of /Users/sasaki.kazuhiro/.coursier/cache/v1 to /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1 Pass --clean-up to also remove empty directories in /Users/sasaki.kazuhiro/.coursier/cache/v1 (including itself if it ends up empty). Alternatively, remove /Users/sasaki.kazuhiro/.coursier/cache/v1 if you think it can be discarded.
以下に抜粋したメッセージのとおり移行先と移行元のディレクトリが両方存在するのでまとめて移行はできないので --one-by-one
オプションで1つづつ移動することにします。
Both /Users/sasaki.kazuhiro/.coursier/cache/v1 and /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1 exist. Pass --one-by-one to move the elements of /Users/sasaki.kazuhiro/.coursier/cache/v1 to /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1
> cs launch --contrib cache-migration -- --clean-up --one-by-one Moving files individually from /Users/sasaki.kazuhiro/.coursier/cache/v1 to /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1 Found 5978 files to move > cs launch --contrib cache-migration -- --clean-up --one-by-one Moving files individually from /Users/sasaki.kazuhiro/.coursier/cache/v1 to /Users/sasaki.kazuhiro/Library/Caches/Coursier/v1 Found 0 files to move
確認してみます。
> ls ~/.coursier/cache/v1/https artifacts.elastic.co repo1.maven.org > ls ~/Library/Caches/Coursier/v1/https artifacts.elastic.co repo.scala-sbt.org repo.typesafe.com repo1.maven.org
移動できていそうです。 IntelliJでプロジェクトのロードすると警告の表示はされなくなりました。まだいくつか残っていますが移動はできたようです。
IntelliJのライブラリ設定の更新
移動後にIntelliJでビルドをすると以下のエラーが発生しました。
scalac: Scala compiler JARs not found (module 'sbt-native-image-example'): /Users/sasaki.kazuhiro/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.3/scala-library-2.13.3.jar, /Users/sasaki.kazuhiro/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.3/scala-compiler-2.13.3.jar, /Users/sasaki.kazuhiro/.coursier/cache/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.3.1/jna-5.3.1.jar, /Users/sasaki.kazuhiro/.coursier/cache/v1/https/repo1.maven.org/maven2/org/jline/jline/3.15.0/jline-3.15.0.jar, /Users/sasaki.kazuhiro/.coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.3/scala-reflect-2.13.3.jar
Project Structure → Librariesを確認するとプロジェクトに設定されているScala SDKの一部が移動してしまったために発生しているようです。 他のプロジェクトでも移動されたライブラリが見つからずエラーになっています。これは当該ライブラリを一旦削除してから「Reload All sbt projects」を実行することで移動後のディレクトリを参照するようになりました。
まとめ
Coursierが導入されていないバージョンのsbtを使っていたり、上記のライブラリの更新をしている時間がない場合には移動は行わない方がいいとおもいます。